﻿// Cow Bowling POJ - 3176.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

using namespace std;
//https://vjudge.csgrandeur.cn/problem/POJ-3176

/*
奶牛们打保龄球时不用真正的保龄球。不过，它们会各自取一个数字（范围在 0...99 之间），
然后排成一个类似保龄球瓶的标准三角形，就像这样：

          7
        3   8
      8   1   0
    2   7   4   4
  4   5   2   6   5
然后，其他奶牛从三角形的顶端开始穿越三角形，"向下 "移动到对角线相邻的两头奶牛中的一头，
直到到达 "底 "行。
奶牛的得分是沿途所到奶牛数量的总和。得分最高的奶牛获胜。

给定一个有 N (1 <= N <= 350) 行的三角形，确定可能达到的最高总和。

输入
第 1 行 一个整数 N

第 2...N+1 行： 第 i+1 行包含 i 个空格分隔的整数，代表三角形的第 i 行。
输出
第 1 行 使用遍历规则可求得的最大和

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

30
*/

const int N = 359;
int dp[N][N];
int n;

void solve() {
    for (int i = n-1; i >= 1; i--) {
        for (int j = 1; j <= i; j++) {
            dp[i][j] = max(dp[i][j] + dp[i + 1][j], dp[i][j] + dp[i + 1][j + 1]);
        }
    }

    cout << dp[1][1] << endl;
}

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= i; j++) {
            cin >> dp[i][j];
        }
    }
    solve();
}

 